package com.stone.encrypt.annotation;

import com.stone.encrypt.infra.enums.EncryptType;

import java.lang.annotation.*;

/**
 * 解密注解，支持对方法返回结果为对象、集合、头行结构类型的数据进行解密
 *
 * @author Mr_wenpan@163.com 2021/08/02 21:23
 */
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface Decrypt {

    /**
     * 待解密的属性，可选多个
     * <p>
     * encryptFields = {"user.name","user.id"}
     */
    String[] decryptFields() default {};

    /**
     * 解密类型
     */
    EncryptType decryptType();

    /**
     * 是否加盐
     */
    boolean withSalt() default false;

    /**
     * 盐值
     */
    String salt() default "";

    /**
     * 去掉加密数据的前缀后再解密
     */
    String prefix() default "";

}
